package com.example.demo.dao;

import com.example.demo.pojo.Friends;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import javax.transaction.Transactional;
import java.util.List;

/**
 * 处理朋友关系的 Repository
 *
 * @author 刘二朋
 * @date 2020-12-02 14:45
 */
@Transactional
public interface FriendsRepository extends JpaRepository<Friends, String> {

    /**
     * 判断 用户1 , 与用户2 是否互相为好友关系的sql语句
     *
     * @param requesta 用户1
     * @param requestb 用户2
     * @return 返回查询到的结果
     */
    @Modifying
    @Query(value = "select * from friends f where f.frienda=?1 and f.friendb=?2 or f.frienda=?2 and f.friendb=?1", nativeQuery = true)
    List<Friends> RequestaAndRequestb(String requesta, String requestb);

    /**
     * 根据用户的账号 , 来查询用户的所有的朋友列表 , 并将列表 , 返回到对应的客户端 , 进行展示
     *
     * @param friendsa 要进行操作的用户的账号
     * @return 返回查询到的数据
     */
    @Modifying
    @Query(value = "select * from friends f where f.frienda=?1", nativeQuery = true)
    List<Friends> selectFriendsa(String friendsa);

    /**
     * 互相删除好友
     *
     * @param id1 用户1
     * @param id2 用户2
     * @return 返回删除的条数
     */
    @Modifying
    @Query(value = "delete from friends f where f.frienda=?1 and f.friendb=?2 or f.frienda=?2 and f.friendb=?1", nativeQuery = true)
    int deleteFriends(String id1, String id2);


}
